<template>
  <div>
    <div id="ThreeDimensional"></div>
  </div>
</template>

<script>
export default {
  name: "ThreeDimensional",
  data() {
    return {
      data: []
    };
  },
  methods: {
    getData: function() {
      for (var t = 0; t < 25; t += 0.001) {
        var x = (1 + 0.25 * Math.cos(75 * t)) * Math.cos(t);
        var y = (1 + 0.25 * Math.cos(75 * t)) * Math.sin(t);
        var z = t + 2.0 * Math.sin(75 * t);
        this.data.push([x, y, z]);
      }
    },
    threeDimensional: function() {
      const threeDimensional = this.$echarts.init(
        document.getElementById("ThreeDimensional")
      );
      threeDimensional.setOption({
        tooltip: {},
        backgroundColor: "#fff",
        visualMap: {
          show: false,
          dimension: 2,
          min: 0,
          max: 30,
          inRange: {
            color: [
              "#313695",
              "#4575b4",
              "#74add1",
              "#abd9e9",
              "#e0f3f8",
              "#ffffbf",
              "#fee090",
              "#fdae61",
              "#f46d43",
              "#d73027",
              "#a50026"
            ]
          }
        },
        xAxis3D: {
          type: "value"
        },
        yAxis3D: {
          type: "value"
        },
        zAxis3D: {
          type: "value"
        },
        grid3D: {
          viewControl: {
            projection: "orthographic"
          }
        },
        series: [
          {
            type: "line3D",
            data: this.data,
            lineStyle: {
              width: 4
            }
          }
        ]
      });
    }
  },
  mounted(){
    this.getData();
    this.threeDimensional();
  }
};
</script>

<style scoped>
#ThreeDimensional {
  height: 80vh;
}
</style>